package br.com.fsa.aplication.Gui;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.com.fsa.aplication.Exception.ConectionException;
import br.com.fsa.aplication.Model.CaminhaoVO;
import br.com.fsa.aplication.Model.CarroVO;
import br.com.fsa.aplication.Model.VeiculoVO;
import br.com.fsa.aplication.Model.bean.TipoCaminhao;
import br.com.fsa.aplication.Services.VeiculoService;

@ManagedBean(name = "cadVeiculo")
@SessionScoped
public class VeiculoMBean {
	private String tipo;
	
	private VeiculoService veiculoService = new VeiculoService();

	private List<VeiculoVO> veiculos = new ArrayList<VeiculoVO>();
	
	private VeiculoVO veiculo = new CarroVO();
	//private TipoCaminhao tp = new TipoCaminhao();

	//private VeiculoVO veiculoCam = new CaminhaoVO(tp);

	private VeiculoVO veiculoSelected;

	private boolean desabilitarExcluir = true;
	private boolean desabilitarCaminhao = true;
	private boolean desabilitarCarro = true;

	public VeiculoMBean() {
		try {
			veiculos = veiculoService.listar();
		} catch (ConectionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public VeiculoVO getVeiculoSelected() {
		return veiculoSelected;

	}

	public void setVeiculoSelected(VeiculoVO veiculoSelected) {
		this.veiculoSelected = veiculoSelected;

	}

	public List<VeiculoVO> getVeiculos() {

		return veiculos;
	}

	public void setVeiculos(List<VeiculoVO> veiculos) {
		this.veiculos = veiculos;
	}

	public VeiculoVO getVeiculo() {
		System.out.println("Metodo getVeiculo");

		return veiculo;

	}

	public void setVeiculo(VeiculoVO veiculo) {
		System.out.println("Metodo setVeiculo");
		this.veiculo = veiculo;
	}

	public void save() {
		try {
			System.out.println("metodo salvar");

			HashMap dto = new HashMap();
			dto.put("objeto", veiculo);
			dto = veiculoService.salvar(dto);
			if (dto.get("resposta").getClass().getSimpleName()
					.equals("VeiculoVO")) {
				veiculos = veiculoService.listar();
				limparCampos();
				System.out.println("persistencia");
			}

		} catch (ConectionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public void clean() {
		try {
			System.out.println("Metodo Excluir");
			HashMap dto = new HashMap();
			dto.put("objeto", getVeiculo());
			veiculoService.remover(dto);
			limparCampos();
			veiculos = veiculoService.listar();
		} catch (ConectionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void update() {
		try {
			if (veiculo.getPlaca() != null) {
				System.out.println("metodo editar");
				HashMap dto = new HashMap();
				dto.put("objeto", getVeiculo());
				veiculoService.atualizar(dto);
				limparCampos();
				veiculos = veiculoService.listar();
			}
		} catch (ConectionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void visualizarSelecionado() {

		System.out.println("metodo visualizarSelecionado");
		setVeiculo(getVeiculoSelected());
		setDesabilitarExcluir(false);
	}

	public void limparCampos() {

		//setVeiculo(new VeiculoVO());
		//setVeiculoSelected(new VeiculoVO());
		setDesabilitarExcluir(true);
	}
	
	public boolean getDesabilitarExcluir() {
		return desabilitarExcluir;

	}

	public void setDesabilitarExcluir(boolean desabilitarExcluir) {
		this.desabilitarExcluir = desabilitarExcluir;

	}

	public void setDesabilitarCaminhao(boolean desabilitarCaminhao) {
		this.desabilitarCaminhao = desabilitarCaminhao;

	}

	public boolean getDesabilitarCaminhao() {
		return desabilitarCaminhao;

	}

	public void setDesabilitarCarro(boolean desabilitarCarro)
	{
		this.desabilitarCarro = desabilitarCarro;

	}
	
	public boolean getDesabilitarCarro()
	{
		return desabilitarCarro;

	}
	

}
